package framework;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.content.Context;
import android.content.res.AssetManager;
import android.os.Environment;

/**
 * PRONTA
 * Provê acesso à arquivos.
 * @author lucas
 *
 */
public class FileIO {
	@SuppressWarnings("unused")
	private Context context;
	private AssetManager manager;
	private String path;//diretório raiz do cartão SD
	
	/**
	 * 
	 * @param context O Context da Activity
	 */
	public FileIO(Context context){
		this.context = context;
		this.manager = context.getAssets();
		this.path = Environment.getExternalStorageDirectory().getAbsolutePath()+
				File.separator;
	}
	/**
	 * Retorna um  Stream para algum arquivo localizado na pasta /assets
	 * @param fileName O arquivo relativo à raiz da pasta assets
	 * @return 
	 * @throws IOException
	 */
	public InputStream readAsset(String fileName) throws IOException{
		return manager.open(fileName);
	}
	
	/**
	 * Retorna um InputStream para algum arquivo contido no cartão SD. 
	 * @WARNING: Garantir que existe permissão de w/r para o cartão SD antes de utilizar. 
	 * @param fileName relativo à raiz do cartão SD
	 * @return
	 * @throws IOException
	 */
	public InputStream readFile(String fileName) throws IOException
	{
		return new FileInputStream(this.path + fileName);
	}
	

	/**
	 * Retorna um OutputStream para algum arquivo contido no cartão SD. 
	 * @WARNING: Garantir que existe permissão de w/r para o cartão SD antes de utilizar. 
	 * @param fileName relativo à raiz do cartão SD
	 * @return
	 * @throws IOException
	 */
	public OutputStream writeFile(String fileName) throws IOException{
		return new FileOutputStream(this.path + fileName);
	}
	 
}
